package com.ht.oss.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

@Data
@Schema(description = "响应数据封装")
public class Res<T> {
    @Schema(description = "响应状态")
    boolean status;

    @Schema(description = "响应信息")
    String msg;

    @Schema(description = "响应数据")
    T data;

    private Res() {}

    public static <T> Res<T> ok() {
        Res<T> res = new Res<>();
        res.setStatus(true);
        return res;
    }

    public static <T> Res<T> ok(String msg) {
        Res<T> res = new Res<>();
        res.setStatus(true);
        res.setMsg(msg);
        return res;
    }

    public static <T> Res<T> ok(String msg, T data) {
        Res<T> res = new Res<>();
        res.setStatus(true);
        res.setMsg(msg);
        res.setData(data);
        return res;
    }

    public static <T> Res<T> fail(String msg) {
        Res<T> res = new Res<>();
        res.setStatus(false);
        res.setMsg(msg);
        return res;
    }

    public Res<T> setData(T data) {
        this.data = data;
        return this;
    }
}
